home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 September / PCWorld_2008-09_cd.bin / v cisle / sadanastroju / delicious_bookmarks-2.0.64-fx.xpi / chrome / deliciousBookmarks.jar / content / bags.js next >
Encoding:
Text File  |  2008-06-19  |  6.4 KB  |  191 lines

  1. /* requires json.js */
  2.  
  3.  
  4. const BAG_TAGSTOOLBAR = "Tags Toolbar"; // only used for the conversion
  5.  
  6. const FAVTAGS_ORDER_CHRONO = "chrono";
  7. const FAVTAGS_ORDER_CHRONO_REVERSE = "chrono_reverse";
  8. const FAVTAGS_ORDER_ALPHANUM = "alphanum";
  9. const FAVTAGS_ORDER_ALPHANUM_REVERSE = "alphanum_reverse";
  10. const FAVTAGS_ORDER_USER = "user";
  11.  
  12. const FAVTAGS_ORDER = [ { key: FAVTAGS_ORDER_CHRONO_REVERSE, 
  13.                           label: "extensions.ybookmarks.toolbar.order.chrono.reverse" },
  14.                         { key: FAVTAGS_ORDER_CHRONO, 
  15.                           label: "extensions.ybookmarks.toolbar.order.chrono" },
  16.                         { key: FAVTAGS_ORDER_ALPHANUM, 
  17.                           label: "extensions.ybookmarks.toolbar.order.alphanum" },
  18.                         { key: FAVTAGS_ORDER_ALPHANUM_REVERSE, 
  19.                           label: "extensions.ybookmarks.toolbar.order.alphanum.reverse" }/*,
  20.                         { key: FAVTAGS_ORDER_USER,
  21.                           label: "extensions.ybookmarks.toolbar.order.user"}*/
  22.                       ];
  23.  
  24. const FAVTAGS_ORDER_DEFAULT = FAVTAGS_ORDER_CHRONO_REVERSE;
  25.  
  26. var ybBags = {
  27.   
  28.   storeService: null,
  29.     
  30.   onLoad: function() {
  31.     try {
  32.       this.storeService = Components.classes["@mozilla.org/ybookmarks-store-service;1"].
  33.           getService(Components.interfaces.nsIYBookmarksStoreService);
  34.       
  35.       this.upgradeFavoriteTags();
  36.       
  37.       } catch (e) { 
  38.       yDebug.print(e, YB_LOG_MESSAGE);
  39.     }
  40.   },
  41.   
  42.   /*
  43.    * Upgrades the Favorite Tags from using preferences to using the datastore (1.3.51)
  44.    *   It copied over the favorite tags and set extensions.ybookmarks@yahoo.bags.converted to true
  45.    *
  46.    *   2007-01-22 cmyang: As of the 1.4 branch, we're just going to convert and clean up the preferences
  47.    *              rather than leave the info in the preferences
  48.    */
  49.   upgradeFavoriteTags: function () {
  50.     var key_yb_bags = "extensions.ybookmarks@yahoo.bags";
  51.     var key_yb_bags_converted = "extensions.ybookmarks@yahoo.bags.converted";
  52.     try {
  53.       var prefs = Components.classes["@mozilla.org/preferences-service;1"].
  54.                           getService(Components.interfaces.nsIPrefBranch);
  55.     
  56.       if (prefs.prefHasUserValue(key_yb_bags)) {
  57.       
  58.         var converted;
  59.         var oldVer = prefs.getCharPref("extensions.ybookmarks@yahoo.version.number").split(".");
  60.       
  61.         if (oldVer.length == 3 && oldVer[1] == 3 && oldVer[2] <= 51 && prefs.prefHasUserValue(key_yb_bags_converted)) {
  62.           converted = false;
  63.         } else {
  64.           converted = prefs.prefHasUserValue(key_yb_bags_converted) && prefs.getBoolPref(key_yb_bags_converted);
  65.         }
  66.          
  67.         if (!converted) { 
  68.           var ttBag = this._getTagsToolbarBag();
  69.             yDebug.print("moving Favorite Tags to localstore...");
  70.       
  71.           if ( ttBag != null) {
  72.             //this.storeService.clearFavoriteTags();
  73.             for (var i=0; i < ttBag.tags.length ; i++) {
  74.               yDebug.print("moving Favorite Tag: " + ttBag.tags[i]);
  75.               this.addFavoriteTag(ttBag.tags[i]);
  76.             }
  77.           }
  78.           yDebug.print("moving Favorite Tags to localstore: done!");
  79.         }
  80.         
  81.         // clean up the preferences
  82.         prefs.clearUserPref(key_yb_bags);
  83.         prefs.clearUserPref(key_yb_bags_converted);
  84.       }
  85.     } catch (e) {
  86.       yDebug.print("error upgrading favorite tags: " + e, YB_LOG_MESSAGE);
  87.     }
  88.   },
  89.  
  90.   getFavoriteTags: function (aTags) {
  91.     var tags = (aTags) ? aTags : [];
  92.     var favTags = this.storeService.getFavoriteTags(tags, {});
  93.     /*var jsFavTags = [];
  94.     nsFavTags.QueryInterface(Components.interfaces.nsIArray);
  95.     var ftEnum = nsFavTags.enumerate();
  96.     while (ftEnum.hasMoreElements()) {
  97.       var nsString = ftEnum.getNext();
  98.       nsString.QueryInterface(Components.interfaces.nsISupportsString);
  99.       jsFavTags.push(nsString.data);
  100.     }*/
  101.     return favTags;
  102.   },
  103.   
  104.   addFavoriteTag: function(tag) {
  105.     this.storeService.addFavoriteTag(tag);
  106.   },
  107.   
  108.   deleteFavoriteTag: function(tag) {
  109.     this.storeService.deleteFavoriteTag(tag);
  110.   },
  111.  
  112.   moveFavoriteTag: function(tag, index) {
  113.     this.storeService.moveFavoriteTag(tag, index);
  114.   },
  115.   
  116.   
  117.   getBookmarksFromFavoriteTag: function(aFavTag, aOrder) {
  118.     try {
  119.       if (!aOrder) {
  120.         aOrder = FAVTAGS_ORDER_DEFAULT;
  121.       }
  122.       var bm = this.storeService.getBookmarksFromFavoriteTag(aFavTag, {});
  123.       this.sortBookmarks(bm, aOrder);
  124.       return bm;
  125.     } catch (e) { 
  126.       yDebug.print("getBookmarksForTagOrdered(" + aFavTag + "): " + e);
  127.       return [];
  128.     }
  129.   },
  130.  
  131.   getFavoriteTagOrder: function (aTag) {
  132.     return this.storeService.getFavoriteTagOrder(aTag);
  133.   },
  134.   
  135.   setFavoriteTagOrder: function (aTag, aOrder) {
  136.     this.storeService.setFavoriteTagOrder(aTag, aOrder);
  137.   },
  138.   
  139.   isFavoriteTag: function (aTag) {
  140.     return this.storeService.isFavoriteTag(aTag);
  141.   },
  142.   
  143.   /* note that this function sorts the array in place */
  144.   sortBookmarks: function (bookmarks, aOrder) {
  145.       var func = null;
  146.  
  147.     if (aOrder == FAVTAGS_ORDER_CHRONO) {
  148.       func = function(a, b) { return a.added_date - b.added_date; };
  149.     } else if (aOrder == FAVTAGS_ORDER_CHRONO_REVERSE) {
  150.       func = function(a, b) { return b.added_date - a.added_date; };      
  151.     } else if (aOrder == FAVTAGS_ORDER_ALPHANUM) {
  152.        func = function(a, b) { return a.name.localeCompare(b.name); };      
  153.     } else if (aOrder == FAVTAGS_ORDER_ALPHANUM_REVERSE) {
  154.        func = function(a, b) { return b.name.localeCompare(a.name); };      
  155.     } else if (aOrder == FAVTAGS_ORDER_USER) {
  156.        func = null;
  157.     }
  158.  
  159.     if (func != null) {
  160.       bookmarks.sort(func);
  161.     }   
  162.   },
  163.   
  164.   
  165.   
  166.   /* deprecated - only used for the conversion */
  167.   _getTagsToolbarBag: function () {
  168.     var prefs = Components.classes["@mozilla.org/preferences-service;1"].
  169.                       getService(Components.interfaces.nsIPrefBranch);
  170.     
  171.     var name = BAG_TAGSTOOLBAR;
  172.     var bags = YBJSON.parse(prefs.getCharPref("extensions.ybookmarks@yahoo.bags"));
  173.     
  174.     for (var i=0; i < bags.length; i++) {
  175.       if (bags[i].name == name) {
  176.         if (bags[i].tags == null) {
  177.           bags[i].tags = [];
  178.         }
  179.         return bags[i];
  180.       }
  181.     }
  182.     return null;
  183.     
  184.   }
  185.   
  186. };
  187.  
  188. window.addEventListener("load",
  189.                           function() { ybBags.onLoad(); },
  190.                           false);
  191.